<!-------- @HEADER
 !
 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 !
 !  Zoltan Toolkit for Load-balancing, Partitioning, Ordering and Coloring
 !                  Copyright 2012 Sandia Corporation
 !
 ! Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
 ! the U.S. Government retains certain rights in this software.
 !
 ! Redistribution and use in source and binary forms, with or without
 ! modification, are permitted provided that the following conditions are
 ! met:
 !
 ! 1. Redistributions of source code must retain the above copyright
 ! notice, this list of conditions and the following disclaimer.
 !
 ! 2. Redistributions in binary form must reproduce the above copyright
 ! notice, this list of conditions and the following disclaimer in the
 ! documentation and/or other materials provided with the distribution.
 !
 ! 3. Neither the name of the Corporation nor the names of the
 ! contributors may be used to endorse or promote products derived from
 ! this software without specific prior written permission.
 !
 ! THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
 ! EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 ! IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 ! PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
 ! CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 ! EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 ! PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 ! PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 ! LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 ! NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 ! SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 !
 ! Questions? Contact Karen Devine	kddevin@sandia.gov
 !                    Erik Boman	egboman@sandia.gov
 !
 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 !
 ! @HEADER
-------> 
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <meta name="GENERATOR" content="Mozilla/4.7 [en] (X11; U; SunOS 5.7 sun4u) [Netscape]">
   <meta name="sandia.approved" content="SAND99-1376">
   <meta name="author" content="karen devine, kddevin@sandia.gov">
   <title> Zoltan Developer's Guide:  Load Balancing Data Structures</title>

</head>
<body bgcolor="#FFFFFF">

<div align=right><b><i><a href="dev.html">Zoltan Developer's Guide</a>&nbsp;
|&nbsp; <a href="dev_services.html">Next</a>&nbsp; |&nbsp; <a href="dev_lb_types.html">Previous</a></i></b></div>

<h2>
<a NAME="interface_structs"></a>Data Structures</h2>
The <b>Zoltan_Struct</b> data structure is the main data structure for interfacing
between Zoltan and the application. The application
creates an <b>Zoltan_Struct</b> data structure through a call to <b><a href="../ug_html/ug_interface_init.html#Zoltan_Create">Zoltan_Create</a></b>.
Fields of the data structure are then set through calls from the application
to interface routines such as <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
and <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>.
The fields of the <b>Zoltan_Struct</b> data structure are listed and described
in the <a href="#Zoltan_Struct">table</a> below. See the <a href="../ug_html/ug.html">Zoltan
User's Guide</a> for descriptions of the function types used in the <b>Zoltan_Struct</b>.
<p>A <b>Zoltan_Struct</b> data structure <i>zz</i> is passed from the application
to Zoltan in the call to <b><a href="../ug_html/ug_interface_lb.html#Zoltan_LB_Partition">Zoltan_LB_Partition</a></b>.
This data structure is passed to the individual load-balancing routines.
The <i>zz->LB.Data_Structure</i> pointer field should point to the main data
structures of the particular load-balancing algorithm so that the data
structures may be preserved for future calls to <b><a href="../ug_html/ug_interface_lb.html#Zoltan_LB_Partition">Zoltan_LB_Partition</a></b>
and so that separate instances of the same load-balancing algorithm (with
different <b>Zoltan_Struct</b> structures) can be used by the application.
<br>&nbsp;
<center><table BORDER WIDTH="90%" NOSAVE >
<tr>
<th><a NAME="Zoltan_Struct"></a>Fields of Zoltan_Struct</th>

<th>Description</th>
</tr>

<tr>
<td VALIGN=TOP>MPI_Comm <i>Communicator</i></td>

<td>The MPI communicator to be used by the Zoltan structure; set
by
<b><a href="../ug_html/ug_interface_init.html#Zoltan_Create">Zoltan_Create</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP>int <i>Proc</i></td>

<td>The rank of the processor within <i>Communicator</i>; set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Create">Zoltan_Create</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP>int <i>Num_Proc</i></td>

<td>The number of processors in <i>Communicator</i>; set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Create">Zoltan_Create</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP>int <i>Num_GID</i></td>

<td>The number of array entries used to represent a 
<a href="dev_lb_types.html">global ID</a>.
Set via a call to
<b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
for <a href="../ug_html/ug_param.html#NUM_GID_ENTRIES">NUM_GID_ENTRIES</a>.
</td>
</tr>

<tr>
<td VALIGN=TOP>int <i>Num_LID</i></td>

<td>The number of array entries used to represent a 
<a href="dev_lb_types.html">local ID</a>.
Set via a call to
<b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
for <a href="../ug_html/ug_param.html#NUM_LID_ENTRIES">NUM_LID_ENTRIES</a>.
</td>
</tr>

<tr>
<td VALIGN=TOP>int <i><a href="../ug_html/ug_param.html#Debug Levels in Zoltan">Debug_Level</a></i></td>

<td>A flag indicating the amount of debugging information that should be
printed by Zoltan.</td>
</tr>

<tr>
<td VALIGN=TOP>int <i>Fortran</i></td>

<td>A flag indicating whether or not the structure was created by a call
from Fortran.</td>
</tr>

<tr>
<td VALIGN=TOP>PARAM_LIST *<i> Params</i></td>

<td>A linked list of string pairs. The first item in each pair is the name
of a modifiable parameter. The second string is the new value the parameter
should adopt. These string pairs are read upon invocation of a Zoltan
algorithm and the appropriate parameter changes are made. This design allows
for different Zoltan structures to have different parameter settings.</td>
</tr>

<tr VALIGN=TOP NOSAVE>
<td NOSAVE>int <i>Deterministic</i></td>

<td>Flag indicating whether algorithms used should be forced to be deterministic;
used to obtain completely reproducible results.&nbsp; Set via a call to
<b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
for <a href="../ug_html/ug_param.html#DETERMINISTIC">DETERMINISTIC</a>.</td>
</tr>

<tr>
<td VALIGN=TOP>int <i>Obj_Weight_Dim</i></td>

<td>Number of weights per object.
&nbsp; Set via a call to
<b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
for <a href="../ug_html/ug_param.html#OBJ_WEIGHT_DIM">OBJ_WEIGHT_DIM</a>.</td>
</tr>

<tr>
<td VALIGN=TOP>int <i>Edge_Weight_Dim</i></td>

<td>For graph algorithms, number of weights per edge. 
Set via a call to
<b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
for <a href="../ug_html/ug_param.html#EDGE_WEIGHT_DIM">EDGE_WEIGHT_DIM</a>.</td>
</tr>

<tr>
<td VALIGN=TOP>int <i>Timer</i></td>

<td>  Timer type that is currently active.
Set via a call to
<b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
for <a href="../ug_html/ug_param.html#TIMER">TIMER</a>.</td>
</tr>

<tr>
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_NUM_EDGES">ZOLTAN_NUM_EDGES_FN</a>
*<i> Get_Num_Edges</i></td>

<td>A pointer to an application-registered function that returns the number
of edges associated with a given object. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Num_Edges_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP>void <i>*Get_Num_Edges_Data</i></td>

<td>A pointer to data provided by the user that will be passed to the function
pointed to by <i>Get_Num_Edges</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Num_Edges_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_EDGE_LIST_FN">ZOLTAN_EDGE_LIST_FN</a>
*<i> Get_Edge_List</i></td>

<td>A pointer to an application-registered function that returns a given
object's neighbors along its edges. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Edge_List_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP>void <i>*Get_Edge_List_Data</i></td>

<td>A pointer to data provided by the user that will be passed to the function
pointed to by <i>Get_Edge_List</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Edge_List_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_NUM_GEOM_FN">ZOLTAN_NUM_GEOM_FN</a>
*<i> Get_Num_Geom</i></td>

<td>A pointer to an application-registered function that returns the number
of geometry values needed to describe the positions of objects. Set in
<b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Num_Geom_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP>void <i>*Get_Num_Geom_Data</i></td>

<td>A pointer to data provided by the user that will be passed to the function
pointed to by <i>Get_Num_Geom</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Num_Geom_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_GEOM_FN">ZOLTAN_GEOM_FN</a>
*<i> Get_Geom</i></td>

<td>A pointer to an application-registered function that returns a given
object's geometry information (e.g., coordinates). Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Geom_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP>void <i>*Get_Geom_Data</i></td>

<td>A pointer to data provided by the user that will be passed to the function
pointed to by <i>Get_Geom</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Geom_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_NUM_OBJ_FN">ZOLTAN_NUM_OBJ_FN</a>
*<i> Get_Num_Obj</i></td>

<td>A pointer to an application-registered function that returns the number
of objects assigned to the processor before load balancing. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Num_Obj_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP>void <i>*Get_Num_Obj_Data</i></td>

<td>A pointer to data provided by the user that will be passed to the function
pointed to by <i>Get_Num_Obj</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Num_Obj_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_OBJ_LIST_FN">ZOLTAN_OBJ_LIST_FN</a>
*<i> Get_Obj_List</i></td>

<td>A pointer to an application-registered function that returns arrays
of objects assigned to the processor before load balancing. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Obj_List_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP>void <i>*Get_Obj_List_Data</i></td>

<td>A pointer to data provided by the user that will be passed to the function
pointed to by <i>Get_Obj_List</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Obj_List_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_FIRST_OBJ_FN">ZOLTAN_FIRST_OBJ_FN</a>
*<i> Get_First_Obj</i></td>

<td>A pointer to an application-registered function that returns the first
object assigned to the processor before load balancing. Used with <i>Get_Next_Obj</i>
as an iterator over all objects. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_First_Obj_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP>void <i>*Get_First_Obj_Data</i></td>

<td>A pointer to data provided by the user that will be passed to the function
pointed to by <i>Get_First_Obj</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_First_Obj_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_NEXT_OBJ_FN">ZOLTAN_NEXT_OBJ_FN</a>
*<i> Get_Next_Obj</i></td>

<td>A pointer to an application-registered function that, given an object
assigned to the processor, returns the next object assigned to the processor
before load balancing. Used with <i>Get_First_Obj</i> as an iterator over
all objects. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Next_Obj_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP>void <i>*Get_Next_Obj_Data</i></td>

<td>A pointer to data provided by the user that will be passed to the function
pointed to by <i>Get_Next_Obj</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Next_Obj_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_NUM_BORDER_OBJ_FN">ZOLTAN_NUM_BORDER_OBJ_FN</a>
*<i> Get_Num_Border_Obj</i></td>

<td>A pointer to an application-registered function that returns the number
of objects sharing a subdomain border with a given processor. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Num_Border_Obj_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP>void <i>*Get_Num_Border_Obj_Data</i></td>

<td>A pointer to data provided by the user that will be passed to the function
pointed to by <i>Get_Num_Border_Obj</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Num_Border_Obj_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_BORDER_OBJ_LIST_FN">ZOLTAN_BORDER_OBJ_LIST_FN</a>
*<i> Get_Border_Obj_List</i></td>

<td>A pointer to an application-registered function that returns arrays
of objects that share a subdomain border with a given processor. Set in
<b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Border_Obj_List_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP>void <i>*Get_Border_Obj_List_Data</i></td>

<td>A pointer to data provided by the user that will be passed to the function
pointed to by <i>Get_Border_Obj_List</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Border_Obj_List_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_FIRST_BORDER_OBJ_FN">ZOLTAN_FIRST_BORDER_OBJ_FN</a>
*<i> Get_First_Border_Obj</i></td>

<td>A pointer to an application-registered function that returns the first
object sharing a subdomain border with a given processor. Used with <i>Get_Next_Border_Obj</i>
as an iterator over objects along borders. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_First_Border_Obj_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP>void <i>*Get_First_Border_Obj_Data</i></td>

<td>A pointer to data provided by the user that will be passed to the function
pointed to by <i>Get_First_Border_Obj</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_First_Border_Obj_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_NEXT_BORDER_OBJ_FN">ZOLTAN_NEXT_BORDER_OBJ_FN</a>
*<i> Get_Next_Border_Obj</i></td>

<td>A pointer to an application-registered function that, given an object,
returns the next object sharing a subdomain border with a given processor.
Used with <i>Get_First_Border_Obj</i> as an iterator over objects along
borders. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Next_Border_Obj_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP>void <i>*Get_Next_Border_Obj_Data</i></td>

<td>A pointer to data provided by the user that will be passed to the function
pointed to by <i>Get_Next_Border_Obj</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Next_Border_Obj_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_NUM_COARSE_OBJ_FN">ZOLTAN_NUM_COARSE_OBJ_FN</a>
*<i> Get_Num_Coarse_Obj</i></td>

<td>A pointer to an application-registered function that returns the number
of objects in the initial coarse grid. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Num_Coarse_Obj_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP>void <i>*Get_Num_Coarse_Obj_Data</i></td>

<td>A pointer to data provided by the user that will be passed to the function
pointed to by <i>Get_Num_Coarse_Obj</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Num_Coarse_Obj_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_COARSE_OBJ_LIST_FN">ZOLTAN_COARSE_OBJ_LIST_FN</a>
*<i> Get_Coarse_Obj_List</i></td>

<td>A pointer to an application-registered function that returns arrays
of objects in the initial coarse grid. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Coarse_Obj_List_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP>void <i>*Get_Coarse_Obj_List_Data</i></td>

<td>A pointer to data provided by the user that will be passed to the function
pointed to by <i>Get_Coarse_Obj_List</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Coarse_Obj_List_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_FIRST_COARSE_OBJ_FN">ZOLTAN_FIRST_COARSE_OBJ_FN</a>
*<i> Get_First_Coarse_Obj</i></td>

<td>A pointer to an application-registered function that returns the first
object of the initial coarse grid. Used with <i>Get_Next_Coarse_Obj</i>
as an iterator over all objects in the coarse grid. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_First_Coarse_Obj_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP>void <i>*Get_First_Coarse_Obj_Data</i></td>

<td>A pointer to data provided by the user that will be passed to the function
pointed to by <i>Get_First_Coarse_Obj</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_First_Coarse_Obj_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_NEXT_COARSE_OBJ_FN">ZOLTAN_NEXT_COARSE_OBJ_FN</a>
*<i> Get_Next_Coarse_Obj</i></td>

<td>A pointer to an application-registered function that, given an object
in the initial coarse grid, returns the next object in the coarse grid.
Used with <i>Get_First_Coarse_Obj</i> as an iterator over all objects in
the coarse grid. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Next_Coarse_Obj_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP>void <i>*Get_Next_Coarse_Obj_Data</i></td>

<td>A pointer to data provided by the user that will be passed to the function
pointed to by <i>Get_Next_Coarse_Obj</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Next_Coarse_Obj_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_NUM_CHILD_FN">ZOLTAN_NUM_CHILD_FN</a>
*<i> Get_Num_Child</i></td>

<td>A pointer to an application-registered function that returns the number
of refinement children of an object. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Num_Child_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP>void <i>*Get_Num_Child_Data</i></td>

<td>A pointer to data provided by the user that will be passed to the function
pointed to by <i>Get_Num_Child</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Num_Child_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_CHILD_LIST_FN">ZOLTAN_CHILD_LIST_FN</a>
*<i> Get_Child_List</i></td>

<td>A pointer to an application-registered function that returns arrays
of objects that are refinement children of a given object. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Child_List_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP>void <i>*Get_Child_List_Data</i></td>

<td>A pointer to data provided by the user that will be passed to the function
pointed to by <i>Get_Child_List</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Child_List_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP><a href="../ug_html/ug_query_lb.html#ZOLTAN_CHILD_WEIGHT_FN">ZOLTAN_CHILD_WEIGHT_FN</a>
*<i> Get_Child_Weight</i></td>

<td>A pointer to an application-registered function that returns the weight
of an object. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Child_Weight_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP>void <i>*Get_Child_Weight_Data</i></td>

<td>A pointer to data provided by the user that will be passed to the function
pointed to by <i>Get_Child_Weight</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Child_Weight_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP><a href="../ug_html/ug_query_mig.html#ZOLTAN_OBJ_SIZE_FN">ZOLTAN_OBJ_SIZE_FN</a>
*<i> Get_Obj_Size</i></td>

<td>A pointer to an application-registered function that returns the size
(in bytes) of data objects to be migrated. Called by <b><a href="../ug_html/ug_interface_mig.html#Zoltan_Migrate">Zoltan_Migrate</a></b>.&nbsp;
Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Obj_Size_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP>void <i>*Get_Obj_Size_Data</i></td>

<td>A pointer to data provided by the user that will be passed to the function
pointed to by <i>Get_Obj_Size</i>.&nbsp; Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Obj_Size_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP><a href="../ug_html/ug_query_mig.html#ZOLTAN_PACK_OBJ_FN">ZOLTAN_PACK_OBJ_FN</a>
*<i> Pack_Obj</i></td>

<td>A pointer to an application-registered function that packs all data
for a given object into a communication buffer provided by the migration
tools in preparation for data-migration communication. Called by <b><a href="../ug_html/ug_interface_mig.html#Zoltan_Migrate">Zoltan_Migrate</a></b>
for each object to be exported.&nbsp; Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Pack_Obj_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP>void <i>*Pack_Obj_Data</i></td>

<td>A pointer to data provided by the user that will be passed to the function
pointed to by <i>Pack_Obj</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Pack_Obj_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP><a href="../ug_html/ug_query_mig.html#ZOLTAN_UNPACK_OBJ_FN">ZOLTAN_UNPACK_OBJ_FN</a>
*<i> Unpack_Obj</i></td>

<td>A pointer to an application-registered function that unpacks all data
for a given object from a communication buffer after the communication
for data migration is completed. Called by <b><a href="../ug_html/ug_interface_mig.html#Zoltan_Migrate">Zoltan_Migrate</a></b>
for each imported object.&nbsp; Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Unpack_Obj_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP>void <i>*Unpack_Obj_Data</i></td>

<td>A pointer to data provided by the user that will be passed to the function
pointed to by <i>Unpack_Obj</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Unpack_Obj_Fn</a></b>.</td>
</tr>
<tr>
<td VALIGN=TOP>ZOLTAN_LB <i>LB</i></td>

<td>A structure with data used by the load-balancing tools. See the <a href="#LB_Fields">table</a>
below.</td>
</tr>

<tr>
<td VALIGN=TOP>ZOLTAN_MIGRATE <i>Migrate</i></td>

<td>A structure with data used by the migration tools. See the <a href="#Migrate_Fields">table</a>
below.</td>
</tr>

<caption ALIGN=BOTTOM><i>Fields of the </i><b>Zoltan_Struct</b><i> data structure.</i></caption>
</table></center>

<p>Each <b>Zoltan_Struct</b> data structure has a <b>ZOLTAN_LB</b> sub-structure.
The <b>ZOLTAN_LB</b> structure contains data used by the load-balancing tools,
including pointers to specific load-balancing methods and load-balancing data
structures. 
The fields of the <b>ZOLTAN_LB</b> structure are listed and described
in in the following <a href="#LB_Fields">table</a>.
<br>&nbsp;
<center><table BORDER WIDTH="90%" NOSAVE >
<tr>
<th><a NAME="LB_Fields"></a>Fields of ZOLTAN_LB</th>

<th>Description</th>
</tr>

<tr>
<td VALIGN=TOP>void *<i> Data_Structure</i></td>

<td>The <a href="dev_add_struct.html">data structure</a> used by the selected load-balancing algorithm; this
pointer is cast by the algorithm to the appropriate data type.</td>
</tr>

<tr>
<td VALIGN=TOP>double <i>Imbalance_Tol</i></td>

<td>The degree of load balance which is considered acceptable.
Set via a call to
<b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
for <a href="../ug_html/ug_alg.html#IMBALANCE_TOL">IMBALANCE_TOL</a>.</td>
</tr>

<tr>
<td VALIGN=TOP>int <i>Num_Global_Parts</i></td>
<td>
The total number of parts to be generated.  
Set via a call to
<b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
for <a href="../ug_html/ug_alg.html#NUM_GLOBAL_PARTS">NUM_GLOBAL_PARTS</a> or through
summation of 
<a href="../ug_html/ug_alg.html#NUM_LOCAL_PARTS">NUM_LOCAL_PARTS</a> 
parameters.
</td>
</tr>

<tr>
<td VALIGN=TOP>int <i>Num_Local_Parts</i></td>
<td>
The number of parts to be generated on this processor.
Set via a call to
<b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
for <a href="../ug_html/ug_alg.html#NUM_LOCAL_PARTS">NUM_LOCAL_PARTS</a> or (roughly) through
division of the
<a href="../ug_html/ug_alg.html#NUM_GLOBAL_PARTS">NUM_GLOBAL_PARTS</a>
parameter by the number of processors.
</td>
</tr>

<tr>
<td VALIGN=TOP>int <i>Return_Lists</i></td>

<td>A flag indicating whether the application wants import and/or export
lists returned by <a href="../ug_html/ug_interface_lb.html#Zoltan_LB_Partition"><b>Zoltan_LB_Partition</b></a>.
Set via a call to
<b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
for <a href="../ug_html/ug_alg.html#RETURN_LISTS">RETURN_LISTS</a>.</td>
</tr>

<tr>
<td VALIGN=TOP>ZOLTAN_LB_METHOD <i>Method</i></td>

<td>An enumerated type designating which load-balancing algorithm should
be used with this Zoltan structure; 
set via a call to
<b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
for <a href="../ug_html/ug_alg.html#LB_METHOD">LB_METHOD</a>.
</td>
</tr>

<tr>
<td VALIGN=TOP>LB_FN *<i> LB_Fn</i></td>

<td>A pointer to the load-balancing function specified by <i>Method</i>.
</td>
</tr>

<tr>
<td VALIGN=TOP>ZOLTAN_LB_FREE_DATA_FN <i>*Free_Structure</i></td>
<td> Pointer to a function that frees the Data_Structure memory.
</td>
</tr>

<tr>
<td VALIGN=TOP>ZOLTAN_LB_POINT_ASSIGN_FN <i>*Point_Assign</i></td>
<td> Pointer to the function that performs 
<a href="../ug_html/ug_interface_augment.html#Zoltan_LB_Point_Assign">Zoltan_LB_Point_Assign</a> for the particular load-balancing method.  
</td>
</tr>

<td VALIGN=TOP>ZOLTAN_LB_BOX_ASSIGN_FN <i>*Box_Assign</i></td>
<td> Pointer to the function that performs 
<a href="../ug_html/ug_interface_augment.html#Zoltan_LB_Box_Assign">Zoltan_LB_Box_Assign</a> for the particular load-balancing method.  
</td>
</tr>

<caption ALIGN=BOTTOM><i>Fields of the </i><b>ZOLTAN_LB</b><i> data structure.</i></caption>
</table></center>


<p>Each <b>Zoltan_Struct</b> data structure has a <b>ZOLTAN_MIGRATE</b> sub-structure.
The <b>ZOLTAN_MIGRATE</b> structure contains data used by the migration tools,
including pointers to pre- and post-processing routines. These pointers
are set through the interface routine <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
and are used in <b><a href="../ug_html/ug_interface_mig.html#Zoltan_Migrate">Zoltan_Migrate</a></b>.
The fields of the <b>ZOLTAN_MIGRATE</b> structure are listed and described
in in the following <a href="#Migrate_Fields">table</a>.
<br>&nbsp;
<center><table BORDER WIDTH="90%" NOSAVE >
<tr>
<th><a NAME="Migrate_Fields"></a>Fields of ZOLTAN_MIGRATE</th>

<th>Description</th>
</tr>

<tr>
<td VALIGN=TOP>int <i>Auto_Migrate</i></td>

<td>A flag indicating whether Zoltan should perform
auto-migration for the application. If true, Zoltan
calls <b><a href="../ug_html/ug_interface_mig.html#Zoltan_Migrate">Zoltan_Migrate</a></b>
to move objects to their new processors; if false, data migration is left
to the user. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Param">Zoltan_Set_Param</a></b>
for <a href="../ug_html/ug_alg.html#AUTO_MIGRATE">AUTO_MIGRATE</a>.</td>
</tr>

<tr>
<td VALIGN=TOP><a href="../ug_html/ug_query_mig.html#ZOLTAN_PRE_MIGRATE_PP_FN">ZOLTAN_PRE_MIGRATE_PP_FN</a>
*<i> Pre_Migrate_PP</i></td>

<td>A pointer to an application-registered function that performs pre-processing
for data migration. The function is called by <b><a href="../ug_html/ug_interface_mig.html#Zoltan_Migrate">Zoltan_Migrate</a></b>
before data migration is performed. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Pre_Migrate_PP_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP>void <i>*Pre_Migrate_PP_Data</i></td>

<td>A pointer to data provided by the user that will be passed to the function
pointed to by <i>Pre_Migrate_PP</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Pre_Migrate_PP_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP><a href="../ug_html/ug_query_mig.html#ZOLTAN_MID_MIGRATE_PP_FN">ZOLTAN_MID_MIGRATE_PP_FN</a>
*<i> Mid_Migrate_PP</i></td>

<td>A pointer to an application-registered function that performs processing
between the packing and unpacking operations in <b><a href="../ug_html/ug_interface_mig.html#Zoltan_Migrate">Zoltan_Migrate</a></b>.
Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Mid_Migrate_PP_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP>void <i>*Mid_Migrate_PP_Data</i></td>

<td>A pointer to data provided by the user that will be passed to the function
pointed to by <i>Mid_Migrate_PP</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Mid_Migrate_PP_Fn</a></b>.</td>
</tr>

<tr NOSAVE>
<td VALIGN=TOP NOSAVE><a href="../ug_html/ug_query_mig.html#ZOLTAN_POST_MIGRATE_PP_FN">ZOLTAN_POST_MIGRATE_PP_FN</a>
*<i>Post_Migrate_PP</i></td>

<td>A pointer to an application-registered function that performs post-processing
for data migration. The function is called by <b><a href="../ug_html/ug_interface_mig.html#Zoltan_Migrate">Zoltan_Migrate</a></b>
after data migration is performed. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Post_Migrate_PP_Fn</a></b>.</td>
</tr>

<tr NOSAVE>
<td VALIGN=TOP NOSAVE>void *<i>Post_Migrate_PP_Data</i></td>

<td>A pointer to data provided by the user that will be passed to the function
pointed to by <i>Post_Migrate_PP</i>.&nbsp; Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Post_Migrate_PP_Fn</a></b>.&nbsp;</td>
</tr>

<tr>
<td VALIGN=TOP><a href="../ug_html/ug_query_mig.html#ZOLTAN_PRE_MIGRATE_FN">ZOLTAN_PRE_MIGRATE_FN</a>
*<i> Pre_Migrate</i></td>

<td>A pointer to an application-registered function that performs pre-processing
for data migration. The function is called by <b><a href="../ug_html/ug_interface_mig.html#Zoltan_Help_Migrate">Zoltan_Help_Migrate</a></b>
before data migration is performed. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Pre_Migrate_Fn</a></b>.
Maintained for backward compatibility with Zoltan v1.3 interface.
</td>
</tr>

<tr>
<td VALIGN=TOP>void <i>*Pre_Migrate_Data</i></td>

<td>A pointer to data provided by the user that will be passed to the function
pointed to by <i>Pre_Migrate</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Pre_Migrate_Fn</a></b>.</td>
</tr>

<tr>
<td VALIGN=TOP><a href="../ug_html/ug_query_mig.html#ZOLTAN_MID_MIGRATE_FN">ZOLTAN_MID_MIGRATE_FN</a>
*<i> Mid_Migrate</i></td>

<td>A pointer to an application-registered function that performs processing
between the packing and unpacking operations in <b><a href="../ug_html/ug_interface_mig.html#Zoltan_Help_Migrate">Zoltan_Help_Migrate</a></b>.
Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Mid_Migrate_Fn</a></b>.
Maintained for backward compatibility with Zoltan v1.3 interface.
</td>
</tr>

<tr>
<td VALIGN=TOP>void <i>*Mid_Migrate_Data</i></td>

<td>A pointer to data provided by the user that will be passed to the function
pointed to by <i>Mid_Migrate</i>. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Mid_Migrate_Fn</a></b>.</td>
</tr>

<tr NOSAVE>
<td VALIGN=TOP NOSAVE><a href="../ug_html/ug_query_mig.html#ZOLTAN_POST_MIGRATE_FN">ZOLTAN_POST_MIGRATE_FN</a>
*<i>Post_Migrate</i></td>

<td>A pointer to an application-registered function that performs post-processing
for data migration. The function is called by <b><a href="../ug_html/ug_interface_mig.html#Zoltan_Help_Migrate">Zoltan_Help_Migrate</a></b>
after data migration is performed. Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Post_Migrate_Fn</a></b>.
Maintained for backward compatibility with Zoltan v1.3 interface.
</td>
</tr>

<tr NOSAVE>
<td VALIGN=TOP NOSAVE>void *<i>Post_Migrate_Data</i></td>

<td>A pointer to data provided by the user that will be passed to the function
pointed to by <i>Post_Migrate</i>.&nbsp; Set in <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Fn">Zoltan_Set_Fn</a></b>
or <b><a href="../ug_html/ug_interface_init.html#Zoltan_Set_Specific_Fn">Zoltan_Set_Post_Migrate_Fn</a></b>.&nbsp;</td>
</tr>


<caption ALIGN=BOTTOM><i>Fields of the </i><b>ZOLTAN_MIGRATE</b><i> data structure.</i></caption>
</table></center>

<p>For each pointer to an application registered function in the
<b>Zoltan_Struct</b>
and <b>ZOLTAN_MIGRATE</b> data structures there is also a pointer to a Fortran
application registered function, of the form ZOLTAN_FUNCNAME_FORT_FN *<i>Get_Funcname_Fort</i>.
These are for use within the Fortran interface. The Zoltan routines 
should invoke the usual application registered function regardless of whether
the Zoltan structure was created from C or Fortran.



<hr WIDTH="100%">
<br>[<a href="dev.html">Table of Contents</a>&nbsp; |&nbsp; <a href="dev_services.html">Next:&nbsp;
Services</a>&nbsp; |&nbsp; <a href="dev_lb_types.html">Previous:&nbsp;
ID Data Types</a>&nbsp; |&nbsp; <a href="https://www.sandia.gov/general/privacy-security/index.html">Privacy and Security</a>]
</body>
</html>
